/*************************************************
 * 描述：汉字转拼音工具类
 *
 * File：pinyinconverter.h
 * Author：zhangzhiming@mozihealthcare.cn
 * Date：25-8-28
 * Update：
 * ************************************************/

#ifndef PINYINCONVERTER_H
#define PINYINCONVERTER_H
#include <memory>
#include <common/export.h>

class QString;
class QStringList;
class CXI_COMMON_EXPORT PinyinConverter
{

public:
	/**
	 * 单例调用
	 * @return
	 */
	static PinyinConverter& instance();

	/**
	 * 删除拷贝构造，确保单例
	 */
	PinyinConverter(PinyinConverter const&) = delete;

	/**
	 * 删除移动构造，确保单例
	 */
	PinyinConverter(PinyinConverter&&) = delete;

	/**
	 * 删除赋值符号重载，确保单例
	 * @return
	 */
	PinyinConverter& operator=(PinyinConverter const&) = delete;
	PinyinConverter& operator=(PinyinConverter const&&) = delete;

	/**
	 * 汉字转拼音
	 * @param str 汉字串
	 * @return 拼音全拼
	 */
	QString cvt2Pinyin(const QString& str) const;

	/**
	 * 汉字转拼音（多音字）
	 * @param str 汉字串
	 * @return 拼音全拼列表（带多音字）
	 */
	QStringList cvt2PinyinList(const QString& str) const;

	/**
	 * 汉字转拼音
	 * @param str 汉字串
	 * @return 拼音首拼
	 */
	QString cvt2FirstCell(const QString& str) const;

	/**
	 * 析构函数
	 */
	~PinyinConverter();

private:
	PinyinConverter();
	friend class PinyinConverterPrivate;
	std::unique_ptr<PinyinConverterPrivate> d;
};


#endif//PINYINCONVERTER_H
